package com.xbongbong.pro.rabbitmq.binders;

import com.xbongbong.pro.rabbitmq.constant.CrmBinderConstant;
import org.springframework.cloud.stream.annotation.Output;
import org.springframework.messaging.MessageChannel;
import org.springframework.stereotype.Service;

/**
 * crm 消息队列
 * @author 魏荣杰
 * @date 2019/2/22 18:48
 * @since v1.0
 * @version v1.0
 */
@Service("crmProducerBinder")
public interface CrmProducerBinder {
    /**
     * 客户
     */
//    @Input(CrmBinderConstant.CUSTOMER_INPUT)
//    SubscribableChannel customerInput();
    @Output(CrmBinderConstant.CUSTOMER_OUTPUT)
    MessageChannel customerOutput();

//    @Input(CrmBinderConstant.CUSTOMER_HANDOVER_INPUT)
//    SubscribableChannel customerHandoverInput();
    @Output(CrmBinderConstant.CUSTOMER_HANDOVER_OUTPUT)
    MessageChannel customerHandoverOutput();

//    @Input(CrmBinderConstant.CUSTOMER_DISTRIBUTION_INPUT)
//    SubscribableChannel customerDistributionInput();
    @Output(CrmBinderConstant.CUSTOMER_DISTRIBUTION_OUTPUT)
    MessageChannel customerDistributionOutput();

    /**
     * 联系人
     */
//    @Input(CrmBinderConstant.CONTACT_INPUT)
//    SubscribableChannel contactInput();
    @Output(CrmBinderConstant.CONTACT_OUTPUT)
    MessageChannel contactOutput();

    /**
     *销售机会
     */
//    @Input(CrmBinderConstant.OPPORTUNITY_INPUT)
//    SubscribableChannel opportunityInput();
    @Output(CrmBinderConstant.OPPORTUNITY_OUTPUT)
    MessageChannel opportunityOutput();

    /*@Output(CrmBinderConstant.OPPORTUNITY_HANDOVER_PUSH)
    MessageChannel opportunityHandoverOutput();*/

    /**
     * 访客计划
     */
//    @Input(CrmBinderConstant.COMMUNICATE_PLAN_INPUT)
//    SubscribableChannel communicatePlanInput();
    @Output(CrmBinderConstant.COMMUNICATE_PLAN_OUTPUT)
    MessageChannel communicatePlanOutput();

    /**
     * 跟进记录
     */
//    @Input(CrmBinderConstant.COMMUNICATE_INPUT)
//    SubscribableChannel communicateInput();
    @Output(CrmBinderConstant.COMMUNICATE_OUTPUT)
    MessageChannel communicateOutput();

    /**
     * 合同
     */
//    @Input(CrmBinderConstant.CONTRACT_INPUT)
//    SubscribableChannel contractInput();
    @Output(CrmBinderConstant.CONTRACT_OUTPUT)
    MessageChannel contractOutput();

    /**
     * 回款
     */
//    @Input(CrmBinderConstant.PAYMENT_INPUT)
//    SubscribableChannel paymentInput();
    @Output(CrmBinderConstant.PAYMENT_OUTPUT)
    MessageChannel paymentOutput();

    /**
     * 发票
     */
//    @Input(CrmBinderConstant.INVOICE_INPUT)
//    SubscribableChannel invoiceInput();
    @Output(CrmBinderConstant.INVOICE_OUTPUT)
    MessageChannel invoiceOutput();


    /**
     * 进项发票
     */
    @Output(CrmBinderConstant.PURCHASE_INVOICE_OUTPUT)
    MessageChannel purchaseInvoiceOutput();

    /**
     * 对账单
     */
    @Output(CrmBinderConstant.STATEMENT_OUTPUT)
    MessageChannel statementOutput();

    /**
     * 信用额度
     */
    @Output(CrmBinderConstant.CREDIT_OUTPUT)
    MessageChannel creditOutput();

    /**
     * 签到
     */
//    @Input(CrmBinderConstant.SIGN_IN_INPUT)
//    SubscribableChannel signInInput();
    @Output(CrmBinderConstant.SIGN_IN_OUTPUT)
    MessageChannel signInOutput();

    /**
     * 工作报告
     */
//    @Input(CrmBinderConstant.WORK_REPORT_INPUT)
//    SubscribableChannel workReportInput();
    @Output(CrmBinderConstant.WORK_REPORT_OUTPUT)
    MessageChannel workReportOutput();

    /**
     * 报价单
     */
    @Output(CrmBinderConstant.QUOTATION_OUTPUT)
    MessageChannel quotationOutput();

    @Output(CrmBinderConstant.PAY_PLAN_OUTPUT)
    MessageChannel payPlanOutPut();

    @Output(CrmBinderConstant.PAYMENT_TASK_OUTPUT)
    MessageChannel paymentTaskOutput();
}
